package com.yang.StackAndQueue;

import java.util.Stack;

public class LeetCdoe232 {

    class MyQueue {
        // 栈模拟队列
        Stack<Integer> stackIn;
        Stack<Integer> stackOut;

        // 初始化数据结构
        public MyQueue() {
             stackIn = new Stack<>();
             stackOut = new Stack<>();
        }

        // 添加一个元素应该在输入栈  push(x) -- 将一个元素放入队列的尾部。
        public void push(int x) {
            stackIn.push(x);
        }

        // 移除元素应该在输出栈  push(x) -- 将一个元素放入队列的尾部。
        public int pop() {
            dumpstackIn();
            return stackOut.pop();
        }

        //  peek() -- 返回队列首部的元素
        public int peek() {
            dumpstackIn();
            return stackOut.peek();
        }

        // 如果输入栈与输出栈为空 则队列为空
        public boolean empty() {
            return stackIn.isEmpty() && stackOut.isEmpty();
        }

        // 如果输出栈为空，那么把输入栈的元素放到输出栈
        public void dumpstackIn(){
            // 如果输出栈不为空 那就直接返回
            if(!stackOut.isEmpty())return;
             while (!stackIn.isEmpty()){
                stackOut.push(stackIn.pop());
            }
        }
    }
}
